package br.com.classificadosonline.persistencia;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.classificadosonline.nucleo.Categoria;

public class CategoriaDAO {

	private static final CategoriaDAO instance = null;

	public static CategoriaDAO getInstance()
	{
		if (instance == null)
		{
			instance = new CategoriaDAO();
		}
		return instance;
	}


	public static CategoriaDAO obterInstancia() {
		return (CategoriaDAO) Conexao.select("SELECT * FROM CATEGORIA");
	}
	
	public static void cadastrarCategoria(String descricao, String foto) {
		Conexao.update("INSERT INTO CATEGORIA VALUES ('" + descricao + "', '" + foto + "')");
	}
	
	public static void modificarCategoria(int codigo, String descricao, String foto) {
		Conexao.update("UPDATE CATEGORIA SET DESCRICAO='" + descricao + "', FOTO='" + foto + "' WHERE CODIGO=" + codigo);
	}	
	
	public static Categoria buscarCategoria(int codigo) {
		return buscar("SELECT * FROM CATEGORIA WHERE CODIGO=" + codigo).get(0);
	}
	
	public static List<Categoria> buscar(String query) {
		ResultSet rs = null;
		List<Categoria> lista = new ArrayList<Categoria>();
		Categoria categoria = null;	
		Statement stmt;
		try {
			stmt = Conexao.conexao().createStatement();							
			rs = stmt.executeQuery(query);
			while (rs.next()) {
				categoria = new Categoria(rs.getInt("CODIGO"), rs.getString("DESCRICAO"), rs.getString("FOTO"));
				lista.add(categoria);
			}
			stmt.close();
			Conexao.conexao().close();	
		} catch (SQLException e) {
		}
		return lista;
	}
	
	public static List<Categoria> listarCategoria() {
		return buscar("SELECT * FROM CATEGORIA");
	}
	
	public static void excluirCategoria(int codigo) {
		Conexao.update("DELETE FROM CATEGORIA WHERE CODIGO=" + codigo);
	}
}
